package com.dzl.enterprise.service;

import com.dzl.base.service.BaseService;
import com.dzl.enterprise.pojo.WelfareEnterpriseOrganization;
import com.dzl.enterprise.pojo.dto.*;
import com.dzl.enterprise.pojo.vo.WelfareEnterpriseOrganizationTreeVo;
import com.dzl.util.JsonResult;

import java.util.List;

/**
 * 企业组织信息表(WelfareEnterpriseOrganization)表服务接口
 * @author ChenLong
 * @date 2021-09-07 15:28:23
 */
public interface WelfareEnterpriseOrganizationService extends BaseService<WelfareEnterpriseOrganization> {

    /**
     * 获取组织架构树
     * @author ChenLong
     * @date 2021-09-08 20:55:24
     * @param enterpriseId 企业Id
     * @return java.util.List<com.dzl.enterprise.pojo.WelfareEnterpriseOrganization>
     **/
    List<WelfareEnterpriseOrganizationTreeVo> getEnterpriseOrganizationTree(Integer enterpriseId);

    /**
     * 添加组织架构信息
     * @param enterpriseOrganizationAddDto 组织信息dto
     * @return void
     * @author ChenLong
     * @date 2021-09-07 17:37:38
     **/
    Integer addEnterpriseOrganization(EnterpriseOrganizationAddDto enterpriseOrganizationAddDto);

    /**
     * 更新组织架构信息
     * @param enterpriseOrganizationUpdDto 组织信息dto
     * @return void
     * @author ChenLong
     * @date 2021-09-07 17:37:38
     **/
    Integer updateEnterpriseOrganization(EnterpriseOrganizationUpdDto enterpriseOrganizationUpdDto);

    /**
     * 删除组织架构信息
     * @param enterpriseOrganizationDelDto 组织信息dto
     * @return void
     * @author ChenLong
     * @date 2021-09-07 17:37:38
     **/
    Integer deleteEnterpriseOrganization(EnterpriseOrganizationDelDto enterpriseOrganizationDelDto);

    /**
     * 添加用户信息
     * @param organizationUserAddDto 用户组织dto
     * @return void
     * @author ChenLong
     * @date 2021-09-07 17:55:36
     **/
    Integer addUserForEnterpriseOrganization(OrganizationUserAddDto organizationUserAddDto);

    /**
     * 更新用户信息
     * @param organizationUserUpdDto 用户组织dto
     * @return void
     * @author ChenLong
     * @date 2021-09-07 17:55:36
     **/
    Integer updateUserForEnterpriseOrganization(OrganizationUserUpdDto organizationUserUpdDto);

    /**
     * 删除用户信息
     * @param organizationUserUpdDto 用户组织dto
     * @return void
     * @author ChenLong
     * @date 2021-09-07 17:55:36
     **/
    Integer deleteUserForEnterpriseOrganization(OrganizationUserUpdDto organizationUserUpdDto);

    /**
     * 用户停用
     * @param organizationUserUpdDto 用户组织dto
     * @return void
     * @author ChenLong
     * @date 2021-09-07 17:55:36
     **/
    Integer updateUserStopUsed(OrganizationUserUpdDto organizationUserUpdDto);

    /**
     * 导入组织架构
     * @param list 行列表
     * @param orgId 企业组织Id
     * @return com.dzl.util.JsonResult<java.lang.Integer>
     * @author ChenLong
     * @date 2021-09-07 15:33:01
     **/
    JsonResult<Integer> addImportOrganization(List<List<String>> list, Integer orgId);

    /**
     * 导入人员
     * @param list 行列表
     * @param enterpriseId 企业组织Id
     * @param userOrganizationDto 用户组织实体
     * @return com.dzl.util.JsonResult<java.lang.Integer>
     * @author ChenLong
     * @date 2021-09-07 15:33:01
     **/
    JsonResult<Integer> addImportUserForOrganization(List<List<String>> list, Integer enterpriseId, UserOrganizationDto userOrganizationDto);

    /**
     * 批量调整组织架构
     * @author ChenLong
     * @date 2021-09-08 20:22:58
     * @param userIdList 用户ID列表
     * @param userOrganizationDto 组织级别
     * @return void
     **/
    Integer updateBatchUserOrganization(List<OrganizationUserUpdUserDto> userIdList,UserOrganizationDto userOrganizationDto);
}
